package utils

import (
	"database/sql"
	"fmt"
	"time"

	"server/config"

	_ "github.com/go-sql-driver/mysql" // 引入 MySQL 驱动包
)

// DB 为全局数据库连接实例
var DB *sql.DB

// ConnectMysql 与 MySQL 数据库建立连接
// 使用 config.Mysql 中的配置进行初始化
func ConnectMysql() error {
    dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", config.Mysql.User, config.Mysql.Password, config.Mysql.Host, config.Mysql.Port, config.Mysql.DbName)

    var err error
    DB, err = sql.Open("mysql", dsn)
    if err != nil {
        return err
    }

    // 连接池参数
    DB.SetMaxOpenConns(100)
    DB.SetMaxIdleConns(10)
    DB.SetConnMaxLifetime(60 * time.Minute)

    if err = DB.Ping(); err != nil {
        return err
    }
    return nil
}

// CheckTableExist 检查指定表的字段值是否存在
// tableName: 表名
// fieldName: 字段名
// fieldValue: 字段值
func CheckTableExist(tableName string, fieldName string, fieldValue interface{}) (bool, error) {
    sqlStr := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE %s = ? LIMIT 1)", tableName, fieldName)
    var exists bool
    if err := DB.QueryRow(sqlStr, fieldValue).Scan(&exists); err != nil {
        return false, err
    }
    return exists, nil
}


